from django.core.management.base import BaseCommand
from health_app.models import Milestone
from typing import Any


class Command(BaseCommand):
    help = '创建区分化的里程碑数据'

    def handle(self, *args: Any, **options: Any) -> None:
        # 为 MilestoneView 页面创建的里程碑数据
        milestones_data = [
            {'name': '戒烟第1天', 'days': 1, 'description': '恭喜你开始戒烟之旅！这是最重要的第一步。', 'reward_message': '今天是你新生活的开始！', 'icon': 'trophy'},
            {'name': '戒烟第3天', 'days': 3, 'description': '度过最难熬的前三天，身体开始适应无烟状态。', 'reward_message': '你已经度过了最困难的时期！', 'icon': 'fire'},
            {'name': '戒烟1周', 'days': 7, 'description': '一周无烟生活，体内的尼古丁已基本清除。', 'reward_message': '坚持一周了，你的意志力真强大！', 'icon': 'calendar'},
            {'name': '戒烟2周', 'days': 14, 'description': '两周无烟，血液循环开始改善。', 'reward_message': '你的身体正在感谢你的决定！', 'icon': 'heart'},
            {'name': '戒烟1个月', 'days': 30, 'description': '一个月无烟生活，肺功能开始改善。', 'reward_message': '太棒了！你的肺部开始恢复健康！', 'icon': 'lungs'},
            {'name': '戒烟3个月', 'days': 90, 'description': '三个月无烟生活，呼吸更顺畅。', 'reward_message': '你的呼吸更加清新了！', 'icon': 'wind'},
            {'name': '戒烟6个月', 'days': 180, 'description': '半年无烟，心脏病风险显著降低。', 'reward_message': '你的心脏在感谢你！', 'icon': 'activity'},
            {'name': '戒烟1年', 'days': 365, 'description': '一年无烟生活，心脏病风险降低50%。', 'reward_message': '恭喜！你已经是一个全新的自己！', 'icon': 'star'},
        ]

        # 为 UserMilestoneView 页面创建的成就数据（使用不同的名称和描述）
        achievements_data = [
            {'name': '戒烟先锋', 'days': 1, 'description': '成功度过戒烟第一天，这是最重要的里程碑！', 'reward_message': '你已经迈出了改变人生的第一步！', 'icon': 'target'},
            {'name': '三日挑战者', 'days': 3, 'description': '成功度过戒烟前三天，克服了最困难的时期。', 'reward_message': '最难的三天已经过去！', 'icon': 'shield'},
            {'name': '坚持勇士', 'days': 7, 'description': '成功坚持一周无烟生活，你的意志力令人敬佩！', 'reward_message': '一周的坚持，你的身体已经开始恢复了！', 'icon': 'award'},
            {'name': '半月达人', 'days': 15, 'description': '成功坚持半个月无烟生活，你已经超越了大多数人！', 'reward_message': '你已经走在成功的路上！', 'icon': 'medal'},
            {'name': '月度之星', 'days': 30, 'description': '成功坚持一个月无烟生活，你的身体正在感谢你的决定！', 'reward_message': '你的肺部在感谢你！', 'icon': 'moon'},
            {'name': '季度冠军', 'days': 90, 'description': '成功坚持一个季度无烟生活，你已经是一个全新的自己！', 'reward_message': '你的毅力令人惊叹！', 'icon': 'crown'},
            {'name': '半年传奇', 'days': 180, 'description': '成功坚持半年无烟生活，你的健康状况大幅提升！', 'reward_message': '你的坚持创造了奇迹！', 'icon': 'gem'},
            {'name': '年度英雄', 'days': 365, 'description': '成功坚持一年无烟生活，你是真正的戒烟英雄！', 'reward_message': '你改变了自己，也激励了他人！', 'icon': 'trophy'},
        ]

        # 创建里程碑数据
        for milestone_data in milestones_data:
            milestone, created = Milestone.objects.get_or_create(  # type: ignore[attr-defined]
                name=milestone_data['name'],
                defaults=milestone_data
            )
            if created:
                self.stdout.write(f'创建里程碑: {milestone.name}')
            else:
                # 更新现有数据
                Milestone.objects.filter(name=milestone_data['name']).update(**milestone_data)  # type: ignore[attr-defined]
                self.stdout.write(f'更新里程碑: {milestone_data["name"]}')

        # 创建成就数据（我们使用相同的 Milestone 模型，但使用不同的数据）
        for achievement_data in achievements_data:
            achievement, created = Milestone.objects.get_or_create(  # type: ignore[attr-defined]
                name=achievement_data['name'],
                defaults=achievement_data
            )
            if created:
                self.stdout.write(f'创建成就: {achievement.name}')
            else:
                # 更新现有数据
                Milestone.objects.filter(name=achievement_data['name']).update(**achievement_data)  # type: ignore[attr-defined]
                self.stdout.write(f'更新成就: {achievement_data["name"]}')

        self.stdout.write(self.style.SUCCESS('区分化的里程碑数据创建完成！'))  # type: ignore[attr-defined]